<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>16数组的拓展操作</title>
</head>

<body>
  <pre>
    sort
    forEach
    map
    filter
    some
    every
    reduce
  </pre>
</body>
<script>
  //不修改原数组
// map(function(currentValue, currentIndex, arr))  返回处理后的数组,通过指定函数处理数组的每个元素(不修改原数组)
  // var arr = [1,2,3,4];

  // var res = arr.map(function(item,index,arr){
  //   // console.log(item,index,arr);
  //   return item * 1.3;
  // })

  // console.log(res);


// forEach(function(currentValue, currentIndex, arr))  没有返回值，数组每个元素都执行一次回调函数
    // var arr = [1,2,3,4];
    // arr.forEach(function(item){
    //   console.log(item);
    // })


// filter(function(currentValue, currentIndex, arr))  返回符合条件所有元素的数组，检测数值元素  
    // var arr = [2,3,4,10,8];
    // var res = arr.filter(function(item){
    //   return item >= 4;
    // })

    // console.log(res);



// some(function(currentValue, currentIndex, arr))    返回布尔值，检测数组元素中是否有元素符合指定条件
      // var arr = [2,3,4,10,8];
      // var res = arr.some(function(item){
      //   return item > 18;
      // })

      // console.log(res);

// every(function(currentValue, currentIndex, arr))   返回布尔值，检测数值元素的每个元素是否都符合条件
      // var arr = [2,3,4,10,8];
      // var res = arr.every(function(item){
      //   return item > 1;
      // })

      // console.log(res);


// reduce(function(total, currentValue, currentIndex, arr),[total]) 将数组元素计算为一个值
      //total  默认初始值为数组的第一项；如果想要改变初始值，给reduce添加第二个参数即可
      //数组的累计计算/数组各项的操作/数组去重等

      // var arr = [2,3,4,10,8,3,4,5,8];

      // // var res = arr.reduce(function(total,item){
      // //   total += item;
      // //   return total;
      // // })

      // // var res = arr.reduce(function(total,item){
      // //   total.push(item * 1.3);
      // //   return total;
      // // },[]);

      // var res = arr.reduce(function(total,item){
      //   if(!total.includes(item)){
      //     total.push(item);
      //   }
      //   return total;
      // },[])

      // console.log(res);



  //修改原数组
// sort([function(a, b)])   返回排序后的数组,对数组的元素进行排序，默认按字符串升序排列(修改原数组)

  var arr = [4,1,3,6,8,9,12];

  var res = arr.sort(function(a,b){
    return b - a;  //a - b 从小到大    b - a  从大到小
  });

  console.log(res);












</script>

</html>